From a2c86932f53cc7350a248223a15bf081c6cba678 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 15 Feb 2007 20:38:21 +0000 Subject: [PATCH] Free the lines even if there are no views. (#408018, Albert Huang) 2007-02-15 Matthias Clasen * gtk/gtktextbtree.c (_gtk_text_btree_delete): Free the lines even if there are no views. (#408018, Albert Huang) svn path=/trunk/; revision=17302 --- ChangeLog | 5 +++++ gtk/gtktextbtree.c | 15 +++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0d5ca916cf..266a553356 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-02-15 Matthias Clasen + + * gtk/gtktextbtree.c (_gtk_text_btree_delete): Free the lines + even if there are no views. (#408018, Albert Huang) + 2007-02-15 Cody Russell * gdk/win32/gdkevents-win32.c: Make sure we get enough main context diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c index d8e436d74a..7601803371 100644 --- a/gtk/gtktextbtree.c +++ b/gtk/gtktextbtree.c @@ -738,6 +738,7 @@ _gtk_text_btree_delete (GtkTextIter *start, GtkTextBTree *tree; GtkTextLine *start_line; GtkTextLine *end_line; + GtkTextLine *line; GtkTextLine *deleted_lines = NULL; /* List of lines we've deleted */ gint start_byte_offset; @@ -989,7 +990,6 @@ _gtk_text_btree_delete (GtkTextIter *start, view = tree->views; while (view) { - GtkTextLine *line; GtkTextLineData *ld; gint deleted_width = 0; @@ -1007,9 +1007,6 @@ _gtk_text_btree_delete (GtkTextIter *start, deleted_height += ld->height; } - if (!view->next) - gtk_text_line_destroy (tree, line); - line = next_line; } @@ -1043,6 +1040,16 @@ _gtk_text_btree_delete (GtkTextIter *start, view = view->next; } + line = deleted_lines; + while (line) + { + GtkTextLine *next_line = line->next; + + gtk_text_line_destroy (tree, line); + + line = next_line; + } + /* avoid dangling pointer */ deleted_lines = NULL; -- 2.30.2